package com.ia.aistream.manager.framework.config.properties;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.Map;

@Getter
@Setter
@Configuration
@ConfigurationProperties("shiro")
public class ShiroConf {

    private User user;
    private Cookie cookie;
    private Session session;

    @Getter
    @Setter
    public static class User {

        /***
         * 登录地址
         */
        private String loginUrl;

        /***
         * 权限认证失败地址
         */
        private String unauthorizedUrl;
        private String indexUrl;

        /***
         * 验证码开关
         */
        private boolean captchaEnabled;

        /***
         * captchaType
         */
        private String captchaType;
    }

    @Getter
    @Setter
    public static class  Cookie {

        /***
         * 设置Cookie的域名
         */
        private String domain;

        /***
         * 设置cookie的有效访问路径
         */
        private String path;

        /***
         * 设置HttpOnly属性
         */
        private boolean httpOnly;

        /***
         * 设置Cookie的过期时间，秒为单位
         */
        private int maxAge;

    }

    @Getter
    @Setter
    public static class Session {

        /***
         * Session超时时间，单位为毫秒（默认30分钟）
         */
        private int expireTime;
        private int dbSyncPeriod;

        /***
         * 相隔多久检查一次session的有效性，单位毫秒，默认就是10分钟
         */
        private int validationInterval;

        /***
         * 同一个用户最大会话数
         */
        private int maxSession;

        /***
         * 踢出之前登录的/之后登录的用户，默认踢出之前登录的用户
         */
        private boolean kickoutAfter;
    }
    /***
     * 过滤地址
     */
    private Map<String,String> filterChainDefinitionMap;
}
